import { IPSDELogicLink } from './ipsdelogic-link';
import { IPSDELogicNodeBase } from './ipsdelogic-node-base';
import { IPSDELogicNodeParam } from './ipsdelogic-node-param';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[logicNodeType]
 * @export
 * @interface IPSDELogicNode
 */
export interface IPSDELogicNode extends IPSDELogicNodeBase {
  /**
   * 逻辑节点连出连接集合
   *
   * @type {IPSDELogicLink[]}
   */
  getPSDELogicLinks(): IPSDELogicLink[] | null;

  /**
   * 逻辑节点连出连接集合
   *
   * @type {IPSDELogicLink[]}
   */
  get psDELogicLinks(): IPSDELogicLink[] | null;

  findPSDELogicLink(objKey: any): IPSDELogicLink | null;

  /**
   * 节点参数集合
   *
   * @type {IPSDELogicNodeParam[]}
   */
  getPSDELogicNodeParams(): IPSDELogicNodeParam[] | null;

  /**
   * 节点参数集合
   *
   * @type {IPSDELogicNodeParam[]}
   */
  get psDELogicNodeParams(): IPSDELogicNodeParam[] | null;

  findPSDELogicNodeParam(objKey: any): IPSDELogicNodeParam | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;
}
